package networkTraining.epoch;

import java.util.Map;

import networkTraining.IDataSet;
import networkTraining.INetworkTrainer;

public interface IEpochExecutor
{
	public INetworkTrainer getNetworkTrainer();

	public void setNetworkTrainer(INetworkTrainer networkTrainer);

	public void executeEpoch();

	public void applyTrainingAlgorithm(Map<String, Double> errorMap);

	public int getEpochIndex();

	public void incrementEpochIndex();

	public void updateErrorSums(Map<String, Double> localErrors);

	public void calculateEpochErrors(IDataSet dataSet);

	public Map<String, Double> getTotalErrorMap();

	public Map<String, Double> getAverageErrorMap();

	public Map<String, Double> getSquaredSumErrorMap();

	public Map<String, Double> getRMSErrorMap();

	public double getEpochRMSError();

	public void resetEpochExecutor();

	public void resetErrors();

}
